Explosive growth in the use of client devices such as mobile phones, personal digital assistants, laptop computers, netbooks, desktop computers, etc. and the increasingly rich application programs demanded by users on those devices has brought to light a significant issue. Even with the recent advances in storage capacity and processing ability, the memory and computational resources of these devices are insufficient to meet the needs of those rich applications.
More recently, data networks have begun to provide access to resources in the cloud. The cloud may be considered, among other things, the combination of networks, datacenters, and other interconnected devices which together comprise an accessible whole. Given the sheer scope of the capabilities available in the cloud, there is an inherent and dramatic asymmetry between the resources available on a client device and those of the cloud.